﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Collections.ObjectModel;

namespace produccion.modelo
{
    public class MGarantiasServiciosyReconocidos : ObservableObject
    {
        MDOgeneral _mod = new MDOgeneral();

        #region Propiedades
        private string _strCodigoCliente;
        public string strCodigoCliente
        {
            get { return _strCodigoCliente; }
            set { _strCodigoCliente = value; }
        }

        private string _strNombreCliente;
        public string strNombreCliente
        {
            get { return _strNombreCliente; }
            set { _strNombreCliente = value; }
        }

        private string _strTipo;
        public string strTipo
        {
            get { return _strTipo; }
            set { _strTipo = value; }
        }

        private string _strDocumento;
        public string strDocumento
        {
            get { return _strDocumento; }
            set { _strDocumento = value; }
        }

        private string _strReparacion;
        public string strReparacion
        {
            get { return _strReparacion; }
            set { _strReparacion = value; }
        }

        private string _strControl;
        public string strControl
        {
            get { return _strControl; }
            set { _strControl = value; }
        }

        private string _strReferencia;
        public string strReferencia
        {
            get { return _strReferencia; }
            set { _strReferencia = value; }
        }

        private string _strNombreReferencia;
        public string strNombreReferencia
        {
            get { return _strNombreReferencia; }
            set { _strNombreReferencia = value; }
        }

        private string _strColor;
        public string strColor
        {
            get { return _strColor; }
            set { _strColor = value; }
        }

        private string _strNombreColor;
        public string strNombreColor
        {
            get { return _strNombreColor; }
            set { _strNombreColor = value; }
        }

        private string _strTalla;
        public string strTalla
        {
            get { return _strTalla; }
            set { _strTalla = value; }
        }

        private string _strMotivo1;
        public string strMotivo1
        {
            get { return _strMotivo1; }
            set { _strMotivo1 = value; }
        }

        private string _strMotivo2;
        public string strMotivo2
        {
            get { return _strMotivo2; }
            set { _strMotivo2 = value; }
        }

        private string _strMotivo3;
        public string strMotivo3
        {
            get { return _strMotivo3; }
            set { _strMotivo3 = value; }
        }

        private string _strMotivo4;
        public string strMotivo4
        {
            get { return _strMotivo4; }
            set { _strMotivo4 = value; }
        }

        private string _strMotivo5;
        public string strMotivo5
        {
            get { return _strMotivo5; }
            set { _strMotivo5 = value; }
        }

        private string _strObservacion;
        public string strObservacion
        {
            get { return _strObservacion; }
            set { _strObservacion = value; }
        }
        #endregion

        #region Metodos

        public DataTable consultaDocumento(string strDocumento)
        {
            try
            {
                string query = "select nroord_erp, codref_erp, codcol_erp, codtal_erp from encrepp where upper(nrorep_erp) = upper('" + strDocumento + "') ";
                DataTable dt = _mod.consulta(query);
                return dt;
            }
            catch (Exception ex) { throw ex; }
        }

        public List<MGarantiasServiciosyReconocidos> listarReparaciones(string strCliente, string strTipo, string strNroDocumento)
        {
            try
            {
                string strCondicion1 = "";
                string strCondicion2="";
              
                if (strCliente == "ZZZ")
                    strCondicion1 = " a.codcli_rpn between '   ' and 'ZZZ' ";
                else
                    strCondicion1 = " a.codcli_rpn  = '" + strCliente + "'";

                if (strTipo == "T")
                    strCondicion2 = " and a.tipo_rpn between ' ' and 'Z' ";
                else
                    strCondicion2 = " and a.tipo_rpn = '" + strTipo + "'";

                if (!String.IsNullOrEmpty(strNroDocumento))
                    strCondicion2 = strCondicion2 + " and a.NRODOC_RPN like '" + strNroDocumento + "%'";

                string query = "select a.CODCLI_RPN,d.NOMCLI_CLI,a.NRODOC_RPN,a.TIPO_RPN,a.NROREP_RPN,a.NROCON_RPN,a.CODREF_RPN,b.NOMREF_REF,a.CODCOL_RPN,c.NOMCOL_COL,a.CODTAL_RPN,a.MOTIVO1_RPN,a.MOTIVO2_RPN,a.MOTIVO3_RPN,a.MOTIVO4_RPN,a.MOTIVO5_RPN,a.OBSERV_RPN from reppendp a inner join maeref b on a.codref_rpn = b.codref_ref inner join maecol c on a.codcol_rpn = c.codcol_col inner join maeclip d on a.codcli_rpn = d.codcli_cli where " + strCondicion1 + strCondicion2 + " order by d.NOMCLI_CLI, a.NRODOC_RPN ";

                DataTable val = _mod.consulta(query);
                List<MGarantiasServiciosyReconocidos> lisreparaciones = new List<MGarantiasServiciosyReconocidos>();
                foreach (DataRow r in val.Rows)
                {
                    lisreparaciones.Add(new MGarantiasServiciosyReconocidos
                    {
                        strCodigoCliente = r["CODCLI_RPN"].ToString().Trim(),
                        strNombreCliente = r["NOMCLI_CLI"].ToString(),
                        strDocumento = r["NRODOC_RPN"].ToString(),
                        strTipo = r["TIPO_RPN"].ToString().Equals("G") ? "Garantia" : r["TIPO_RPN"].ToString().Equals("S") ? "Servicio" : r["TIPO_RPN"].ToString().Equals("C") ? "Reconocido" : r["TIPO_RPN"].ToString().Equals("D") ? "Devolucion" : "Reparacion",
                        strReparacion = r["NROREP_RPN"].ToString(),
                        strControl = r["NROCON_RPN"].ToString(),
                        strReferencia = r["CODREF_RPN"].ToString(),
                        strNombreReferencia = r["NOMREF_REF"].ToString(),
                        strColor = r["CODCOL_RPN"].ToString(),
                        strNombreColor = r["NOMCOL_COL"].ToString(),
                        strTalla = r["CODTAL_RPN"].ToString(),
                        strMotivo1 = r["MOTIVO1_RPN"].ToString(),
                        strMotivo2 = r["MOTIVO2_RPN"].ToString(),
                        strMotivo3 = r["MOTIVO3_RPN"].ToString(),
                        strMotivo4 = r["MOTIVO4_RPN"].ToString(),
                        strMotivo5 = r["MOTIVO5_RPN"].ToString(),
                        strObservacion = r["OBSERV_RPN"].ToString()
                    });
                }
                return lisreparaciones;
            }
            catch (Exception e) { throw e; }
        }
        #endregion
    }
}
